The increasing versatility of digital camera products has allowed digital cameras to be integrated into a wide array of devices and has expanded their use to new applications. For example, phones, drones, cars, computers, televisions, and many other devices today are often equipped with cameras. The cameras allow users to capture video and images from any device equipped with a camera. The video and images can be captured for recreational use, professional photography, surveillance, and automation, among other applications. The quality of the video and images largely depends on the specific hardware capabilities of the camera. However, various software-based technologies have also been developed and implemented to enhance the quality of video and images captured from cameras. For example, electronic image stabilization (EIS) or digital image stabilization is a digital technique developed to minimize blurring and other image quality issues caused by movement or shaking of the camera during use. EIS tries to detect any motion of the camera and adjust the captured image data to counter the detected motion of the camera, thereby reducing blur and producing sharper images.
Unfortunately, current EIS solutions are inflexible and often unsuitable for different camera applications and use case scenarios. For example, EIS solutions are generally pre-optimized for a limited set of movement patterns and ill equipped to handle others. However, camera movement patterns can vary widely between applications, such as still camera applications, mobile device applications, and use case scenarios, such as walking, running or traveling during camera use. Indeed, movement patterns can even vary by user, as different users have different shaking and moving patterns. The list of factors that may affect camera movement patterns is extensive and will continue to grow as new camera applications and implementations emerge. Consequently, flexible and robust image stabilization techniques are needed for accurately recognizing and countering camera movement patterns and optimizing image stabilization performance across camera applications and use case scenarios.